<?php
// 门户模块公共函数库
use think\Db;
use Naixiaoxin\ThinkWechat\Facade as Wechat;

//对应分类
if (!function_exists('get_category')) {
    function get_category($key=false){
        $array = db('gacj_category')->where(['status'=>1])->order('id asc')->column('id, title');
        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

//对应表单
if (!function_exists('get_form')) {
    function get_form($key=false){
        $array = db('gacj_form')->where(['status'=>1])->order('id desc')->column('id, title');
        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

//性别
if (!function_exists('get_sex')) {
    function get_sex($key=false){
        $array = [
            '男'=>'男',
            '女'=>'女',
        ];

        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

//输入类型
if (!function_exists('get_field_type')) {
    function get_field_type($key=false){
        $array = [ 1=>'姓名', 2=>'手机', 3=>'年龄', 4=>'单行文本', 5=>'多行文本', 6=>'下拉列表', 7=>'单选列表', 8=>'多选列表', 9=>'日期选择', 10=>'图片上传', 11=>'文件上传'];

        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

//用户提交的类别转换为表单类别
if (!function_exists('get_form_type')) {
    function get_form_type($key=false){
        $array = [1=>'text', 2=>'text', 3=>'text', 4=>'text', 5=>'textarea', 6=>'select', 7=>'radio', 8=>'checkbox', 9=>'datetime', 10=>'image', 11=>'file'];
        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

//用户提交的类别转换为表单类别
if (!function_exists('get_form_type_static')) {
    function get_form_type_static($key=false){
        $array = [1=>'static', 2=>'static', 3=>'static', 4=>'static', 5=>'static', 6=>'select', 7=>'radio', 8=>'checkbox', 9=>'datetime', 10=>'gallery', 11=>'archive'];
        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

//验证方式
if (!function_exists('get_field_match')) {
    function get_field_match($key=false){
        //$array = [0=>'不验证', 1=>'手机', 2=>'邮箱', 3=>'身份证', 4=>'汉字', 5=>'数字', 6=>'字母', 7=>'自定义'];
        $array = [0=>'不验证', 1=>'手机', 2=>'邮箱', 3=>'身份证', 4=>'汉字', 5=>'数字', 6=>'字母'];

        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return '未填写';
            }
        }
    }
}

/**
 * 格式化json返回
 * @author rocky
 * @return mixed
 * 数字由正数、负数、和小数组成
 * 字母由26个英文字母组成的字符串组成
 * 用户名由6-24位字母、数字组成，首位不能是数字
 * 密码由6-16位大小写字母、数字和下划线组成
 */
if (!function_exists('get_field_match_reg')) {
    function get_field_match_reg($key=false){
        $array = [0=>'', 1=>'/^1[3456789]{1}\d{9}$/', 2=>'/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', 3=>'/^(?:\d{15}|\d{17}[\dxX])$/', 4=>'/^[\x80-\xff]{0,}$/', 5=>'/^(\-|\+)?\d+(\.\d+)?$/', 6=>'/^[A-Za-z]+$/', 7=>''];

        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

if (!function_exists('random_string')) {
    function random_string($length = 6)
    {
        $characters = 'abcdefghijklmnopqrstuvwxyz';
        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return $randomString;
    }
}

//模板
if (!function_exists('get_template')) {
    function get_template($key=false){
        $array = [
            'default'=>'默认模板',
            'single'=>'单页模板',
        ];

        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

if (!function_exists('get_time_status')) {
    function get_time_status($start_time, $end_time)
    {
        $now = time();

        //1未开始 2已过期 3进行中
        if(!$start_time && $end_time){
            if($end_time < $now){
                return 2;
            }else{
                return 3;
            }
        }elseif($start_time && !$end_time){
            if($start_time > $now){
                return 1;
            }else{
                return 3;
            }
        }elseif(!$start_time && !$end_time){
            return 3;
        }else{
            if($start_time > $now){
                return 1;
            }elseif($end_time < $now){
                return 2;
            }else{
                return 3;
            }
        }
    }
}

if (!function_exists('get_time_msg')) {
    function get_time_msg($key)
    {
        $array = [1=>'活动尚未开始', 2=>'活动已经结束', 3=>'活动进行中'];
        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return '未填写';
            }
        }
    }
}

if (!function_exists('get_field_format')) {
    function get_field_format($fields)
    {
        $array = [];
        foreach ($fields['title'] as $key => $val) {
            $array[$key]['title'] = $val;
            $array[$key]['is_must'] = $fields['is_must'][$key];
            $array[$key]['type'] = $fields['type'][$key];
            $array[$key]['option'] = $fields['option'][$key];
            $array[$key]['tip'] = $fields['tip'][$key];
            $array[$key]['sort'] = $fields['sort'][$key];
            $array[$key]['match'] = $fields['match'][$key];
            $array[$key]['length'] = $fields['length'][$key];

            //不存在字段
            if(empty($fields['field'][$key])){
                if(in_array($val, get_field_type_regular())){
                    //固定字段
                    $array[$key]['field'] = get_field_type_regular_flip($val);
                }else{
                    //随机字段
                    $array[$key]['field'] = 'ghg_'.random_string();
                }
            }else{
                $array[$key]['field'] = $fields['field'][$key];
            }

        }

        if (!empty($array)) {
            return json_encode($array);
        }

        return;
    }
}

//模板
if (!function_exists('get_slider_type')) {
    function get_slider_type($key=false){
        $array = [
            1=>'文章',    //文章
            2=>'活动',    //活动
            3=>'预约',    //预约
        ];

        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

if (!function_exists('get_field_form')) {
    function get_field_form($form, $fields)
    {
        foreach ($form as $key => &$val) {
            $val['value'] = $fields[$val['field']] ?? '';

            //图片 [1=>'text', 2=>'text', 3=>'text', 4=>'text', 5=>'textarea', 6=>'select', 7=>'radio', 8=>'checkbox', 9=>'datetime', 10=>'image', 11=>'file'];
            if($val['type'] == 10){
                $val['value'] = get_full_thumb($val['value']);
            }

            //视频
            if($val['type'] == 11){
                $val['value'] = get_full_file_path($val['value']);
            }

        }

        return $form;
    }
}

if (!function_exists('send_template_message')) {
    function send_template_message($openid, $template_id, $url, $data)
    {
        $app = Wechat::officialAccount();
        $res = $app->template_message->send([
            'touser' => $openid,
            'template_id' => $template_id,
            'url' => $url,
            'data' =>$data
        ]);
        return $res;
    }
}

//输入类型
if (!function_exists('get_field_type_regular')) {
    function get_field_type_regular($key=false){
        $array = [ 'truename'=>'姓名', 'phone'=>'手机', 'age'=>'年龄'];

        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

//输入类型
if (!function_exists('get_field_type_regular_flip')) {
    function get_field_type_regular_flip($key=false){
        $array = array_flip(get_field_type_regular());

        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

//对应表单
if (!function_exists('get_user')) {
    function get_user($key=false){
        $array = db('gacj_user')->where(['status'=>1])->order('id asc')->limit(20)->column('id, nickname');
        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}

//模板
if (!function_exists('get_check_msg')) {
    function get_check_msg($key=false){
        $array = [
            '未审核','通过','不通过'
        ];

        if($key === false){
            return $array;
        }else{
            if(isset($array[$key])){
                return $array[$key];
            }else{
                return;
            }
        }
    }
}